#include "lvgl/lvgl.h"
#include "lvgl/demos/lv_demos.h"
#include "lv_drivers/display/fbdev.h"
#include "lv_drivers/indev/evdev.h"
#include <unistd.h>
#include <pthread.h>
#include <time.h>
#include <sys/time.h>
#include <stdio.h>

//按键事件触发的函数(函数句柄==回调函数==函数指针==指针)
static void event_handler_bnt_1(lv_event_t * e)
{
    lv_event_code_t code = lv_event_get_code(e);

    if(code == LV_EVENT_PRESSED) 
    {
        //按键发生LV_EVENT_PRESSED这个事件之后的处理如下
        lv_obj_t * img2 = lv_img_create(lv_scr_act());
        lv_obj_set_pos(img2,100,100);
        lv_img_set_src(img2,  "S:/IOT/bling/1.jpg");
        printf("show jpg200\n");

        printf("ok\n");
        // LV_LOG_USER("Clicked");
    }
    // else if(code == LV_EVENT_VALUE_CHANGED) {
    //     printf("no ok\n");
    //     // LV_LOG_USER("Toggled");
    // }
}

static void event_handler_bnt_2(lv_event_t * e)
{
    lv_event_code_t code = lv_event_get_code(e);

    if(code == LV_EVENT_PRESSED) 
    {
        //按键发生LV_EVENT_PRESSED这个事件之后的处理如下
        lv_obj_t * img2 = lv_img_create(lv_scr_act());
        lv_obj_set_pos(img2,100,100);
        lv_img_set_src(img2,  "S:/IOT/bling/2.jpg");
        printf("show jpg200\n");
    }
}

static void event_handler_bnt_3(lv_event_t * e)
{
    lv_event_code_t code = lv_event_get_code(e);

    if(code == LV_EVENT_PRESSED) 
    {
        //按键发生LV_EVENT_PRESSED这个事件之后的处理如下
        lv_obj_t * img2 = lv_img_create(lv_scr_act());
        lv_obj_set_pos(img2,100,100);
        lv_img_set_src(img2,  "S:/IOT/bling/3.jpg");
        printf("show jpg200\n");
    }
}

#if 1
//作业0520
int lv_bling_btn_zuoye0520()
{
    //实例化一个按键btn1的对象
    lv_obj_t * btn1 = lv_btn_create(lv_scr_act());
    //设置按键btn的size大小200*200
    lv_obj_set_size(btn1,100,50);
    //设置按键btn的位置(400,240)
    lv_obj_set_pos(btn1,600,100);
    //添加事件(自定义回调函数event_handler 时间句柄)
    lv_obj_add_event_cb(btn1, event_handler_bnt_1, LV_EVENT_PRESSED, NULL);
    //显示文字在按键btn1上
    lv_obj_t * label1 = lv_label_create(btn1);//实例化一个标签label对象
    lv_label_set_text(label1, "first");//给标签注释
    lv_obj_center(label1); //将文本放在按键的中间  

    //实例化一个按键btn2的对象
    lv_obj_t * btn2 = lv_btn_create(lv_scr_act());
    //设置按键btn的size大小200*200
    lv_obj_set_size(btn2,100,50);
    //设置按键btn的位置(400,240)
    lv_obj_set_pos(btn2,600,200);
    //添加事件(自定义回调函数event_handler 时间句柄)
    lv_obj_add_event_cb(btn2, event_handler_bnt_2, LV_EVENT_PRESSED, NULL); 
    //显示文字在按键btn2上
    lv_obj_t * label2 = lv_label_create(btn2);//实例化一个标签label对象
    lv_label_set_text(label2, "second");//给标签注释
    lv_obj_center(label2); //将文本放在按键的中间  

    //实例化一个按键btn3的对象
    lv_obj_t * btn3 = lv_btn_create(lv_scr_act());
    //设置按键btn的size大小200*200
    lv_obj_set_size(btn3,100,50);
    //设置按键btn的位置(400,240)
    lv_obj_set_pos(btn3,600,300);
    //添加事件(自定义回调函数event_handler 时间句柄)
    lv_obj_add_event_cb(btn3, event_handler_bnt_3, LV_EVENT_PRESSED, NULL); 
    //显示文字在按键btn2上
    lv_obj_t * label3 = lv_label_create(btn3);//实例化一个标签label对象
    lv_label_set_text(label3, "third");//给标签注释
    lv_obj_center(label3); //将文本放在按键的中间      

    return 0;
}
#endif


#if 0
int lv_btn_label(int btn_width,int btn_height,int btn_x,int btn_y,char *label_text)
{
    //实例化一个按键btn1的对象
    lv_obj_t * btn1 = lv_btn_create(lv_scr_act());
    //设置按键btn的size大小200*200
    lv_obj_set_size(btn1,btn_width,btn_height);
    //设置按键btn的位置(400,240)
    lv_obj_set_pos(btn1,btn_x,btn_y);
    //添加事件(自定义回调函数event_handler 时间句柄)
    lv_obj_add_event_cb(btn1, event_handler_bnt_1, LV_EVENT_PRESSED, NULL);
    //显示文字在按键btn1上
    lv_obj_t * label1 = lv_label_create(btn1);//实例化一个标签label对象
    lv_label_set_text(label1, label_text);//给标签注释
    lv_obj_center(label1); //将文本放在按键的中间  

}

//如果单独的画按键如下封装没有问题；(但是下面的封装的函数句柄是一样，无法实现按键不同的功能)
int lv_bling_btn_zuoye0520()
{
    lv_btn_label(100,50,600,100,"first");
    
    lv_btn_label(100,50,600,200,"second");

    lv_btn_label(100,50,600,300,"third");

    return 0;
}
#endif